package com.zjsru.oneDay;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Queue;

/**
 * 简化路径
 * <p>
 * <p>
 * 输入：path = "/home/"
 * 输出："/home"
 * 解释：注意，最后一个目录名后面没有斜杠。
 * <p>
 * 注意事项：
 * 始终以斜杠 '/' 开头。
 * 两个目录名之间必须只有一个斜杠 '/' 。
 * 最后一个目录名（如果存在）不能 以 '/' 结尾。
 * 此外，路径仅包含从根目录到目标文件或目录的路径上的目录（即，不含 '.' 或 '..'）
 */

public class simplifyPath {
    public String simplifyPath(String path) {
        Deque<String> d = new ArrayDeque<>();
        int n = path.length();
        for (int i = 1; i < n;) {
            if (path.charAt(i) == '/' && ++i >= 0) continue;
            int j = i + 1;
            while (path.charAt(j) != '/' && j < n) {
                j++;
            }
            String item = path.substring(i, j);
            if (item.equals("..")) {
                if (!d.isEmpty()) {
                    d.pollLast();
                }
            } else if (!item.equals(".")) {
                d.addLast(item);
            }
            i = j;
        }
        StringBuilder sb = new StringBuilder();
        while (!d.isEmpty()) {
            sb.append("/" + d.pollFirst());
        }
        return sb.length() == 0 ? "/" : sb.toString();
    }

    public static void main(String[] agrs) {
        simplifyPath simplifyPath = new simplifyPath();
        String path = "/home//foo/";
        System.out.println(simplifyPath.simplifyPath(path));
    }
}
